<?php

namespace App\Http\Middleware;

use App\Exceptions\LoginException;
use App\Models\Apiuser;
use Closure;

class CheckApi
{

    // 接口验证中间件
    public function handle($request, Closure $next)
    {

//        // 获取接口请求头发送过来的数据
//        $username = $request->header('username');
//        $password = $request->header('password');
//        $timestemp = $request->header('timestemp');
//        // 签名，计算出来 md5(username+password+token+时间戳)
//        $sign = $request->header('sign');
//
//        // 判断账号和密码是否存在
//        $model = Apiuser::where('username', $username)->where('password', $password)->first();
//        if (!$model) {
//            // 抛出异常，异常抛出，程序将不会向下执行
//            throw new LoginException('账号或密码不存在', 401);
//        }
//        // 账号或密码正确，比对一下sign签名是否一致
//        $token = $model->token;
//        // 后台计算出来的签名
//        $signatrue = md5($username . $password . $token . $timestemp);
//        // 后台计算出来的签名和前台的签名比对一下
//        if ($sign != $signatrue) {
//            // 抛出异常，异常抛出，程序将不会向下执行
//            throw new LoginException('签名有误', 402);
//        }
        // 此句不能少，少了则报错
        return $next($request);
    }
}
